home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / LibPanel.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  30KB  |  1,166 lines

  1. /*
  2. **    LibPanel.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16.     /* Length of a signature string after translating it back. */
  17.  
  18. #define SIGNATURE_LENGTH 40
  19.  
  20. enum    {
  21.             GAD_DEFAULT_TYPE=1000,
  22.             GAD_DEFAULT_NAME,
  23.             GAD_DEFAULT_SENDSIGNATURE,
  24.             GAD_DEFAULT_PREFS,
  25.  
  26.             GAD_ASCII_UPLOAD_TYPE,
  27.             GAD_ASCII_UPLOAD_NAME,
  28.             GAD_ASCII_UPLOAD_SIGNATURE,
  29.             GAD_ASCII_UPLOAD_PREFS,
  30.             GAD_ASCII_DOWNLOAD_TYPE,
  31.             GAD_ASCII_DOWNLOAD_NAME,
  32.             GAD_ASCII_DOWNLOAD_SIGNATURE,
  33.             GAD_ASCII_DOWNLOAD_PREFS,
  34.  
  35.             GAD_TEXT_UPLOAD_TYPE,
  36.             GAD_TEXT_UPLOAD_NAME,
  37.             GAD_TEXT_UPLOAD_SIGNATURE,
  38.             GAD_TEXT_UPLOAD_PREFS,
  39.             GAD_TEXT_DOWNLOAD_TYPE,
  40.             GAD_TEXT_DOWNLOAD_NAME,
  41.             GAD_TEXT_DOWNLOAD_SIGNATURE,
  42.             GAD_TEXT_DOWNLOAD_PREFS,
  43.  
  44.             GAD_BINARY_UPLOAD_TYPE,
  45.             GAD_BINARY_UPLOAD_NAME,
  46.             GAD_BINARY_UPLOAD_SIGNATURE,
  47.             GAD_BINARY_UPLOAD_PREFS,
  48.             GAD_BINARY_DOWNLOAD_TYPE,
  49.             GAD_BINARY_DOWNLOAD_NAME,
  50.             GAD_BINARY_DOWNLOAD_SIGNATURE,
  51.             GAD_BINARY_DOWNLOAD_PREFS,
  52.  
  53.             GAD_DEFAULT_RECEIVESIGNATURE,
  54.  
  55.             GAD_MANGLE,GAD_PAGE,GAD_PAGEGROUP,
  56.             GAD_NOTIFY_AFTER_N_ERRORS,GAD_NOTIFY_WHEN,
  57.             GAD_IDENTIFY_COMMAND,
  58.             GAD_USE,GAD_CANCEL,
  59.  
  60.             GAD_PROTOCOLTYPE,GAD_PAGER
  61.     };
  62.  
  63. BOOL
  64. SignaturePanel(struct Window *Parent,STRPTR String,LONG ReceiveMode)
  65. {
  66.     STATIC STRPTR SendProtocols[] =
  67.     {
  68.         "Z-Modem",
  69.         NULL
  70.     };
  71.  
  72.     STATIC STRPTR SendSignatureTypes[] =
  73.     {
  74.         "*^XB01",
  75.         NULL
  76.     };
  77.  
  78.     STATIC STRPTR ReceiveProtocols[] =
  79.     {
  80.         "Z-Modem",
  81.         "Hydra",
  82.         "QuickB",
  83.         NULL
  84.     };
  85.  
  86.     STATIC STRPTR ReceiveSignatureTypes[] =
  87.     {
  88.         "*^XB00",
  89.         "^XcA\\\\f5\\\\a3^Xa",
  90.         "\\*ENQ",
  91.         NULL
  92.     };
  93.  
  94.     STRPTR *SignatureTypes,*Protocols;
  95.     struct LayoutHandle    *Handle;
  96.     BOOL Ok;
  97.  
  98.     Ok = FALSE;
  99.  
  100.     if(ReceiveMode)
  101.     {
  102.         SignatureTypes    = ReceiveSignatureTypes;
  103.         Protocols        = ReceiveProtocols;
  104.     }
  105.     else
  106.     {
  107.         SignatureTypes    = SendSignatureTypes;
  108.         Protocols        = SendProtocols;
  109.     }
  110.  
  111.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  112.         LAHN_LocaleHook,    &LocaleHook,
  113.     TAG_DONE))
  114.     {
  115.         struct Window *PanelWindow;
  116.         BYTE Index;
  117.  
  118.         Index = 0;
  119.  
  120.         LT_New(Handle,
  121.             LA_Type,    VERTICAL_KIND,
  122.         TAG_DONE);
  123.         {
  124.             LT_New(Handle,
  125.                 LA_Type,    VERTICAL_KIND,
  126.             TAG_DONE);
  127.             {
  128.                 LT_New(Handle,
  129.                     LA_Type,        LISTVIEW_KIND,
  130.                     LA_LabelID,        MSG_XFER_SELECT_SIGNATURE_TXT,
  131.                     LALV_Labels,    Protocols,
  132.                     LALV_Link,        NIL_LINK,
  133.                     LALV_CursorKey,    TRUE,
  134.                     LALV_MaxGrowY,    5,
  135.                     LA_BYTE,        &Index,
  136.                     LA_ID,            GAD_PROTOCOLTYPE,
  137.                     LA_Chars,        30,
  138.                 TAG_DONE);
  139.  
  140.                 LT_EndGroup(Handle);
  141.             }
  142.  
  143.             LT_New(Handle,
  144.                 LA_Type,VERTICAL_KIND,
  145.             TAG_DONE);
  146.             {
  147.                 LT_New(Handle,
  148.                     LA_Type,        XBAR_KIND,
  149.                     LAXB_FullSize,    TRUE,
  150.                 TAG_DONE);
  151.  
  152.                 LT_EndGroup(Handle);
  153.             }
  154.  
  155.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  156.                 LAGR_SameSize,    TRUE,
  157.                 LAGR_Spread,    TRUE,
  158.             TAG_DONE);
  159.             {
  160.                 LT_New(Handle,
  161.                     LA_Type,        BUTTON_KIND,
  162.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  163.                     LA_ID,            GAD_USE,
  164.                     LABT_ReturnKey,    TRUE,
  165.                     LABT_ExtraFat,    TRUE,
  166.                 TAG_DONE);
  167.  
  168.                 LT_New(Handle,
  169.                     LA_Type,        BUTTON_KIND,
  170.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  171.                     LA_ID,            GAD_CANCEL,
  172.                     LABT_EscKey,    TRUE,
  173.                     LABT_ExtraFat,    TRUE,
  174.                 TAG_DONE);
  175.  
  176.                 LT_EndGroup(Handle);
  177.             }
  178.  
  179.             LT_EndGroup(Handle);
  180.         }
  181.  
  182.         if(PanelWindow = LT_Build(Handle,
  183.             LAWN_TitleID,        MSG_XFER_SIGNATURE_TXT,
  184.             LAWN_HelpHook,        &GuideHook,
  185.             LAWN_Parent,        Parent,
  186.             WA_DepthGadget,        TRUE,
  187.             WA_DragBar,            TRUE,
  188.             WA_RMBTrap,            TRUE,
  189.             WA_Activate,        TRUE,
  190.             WA_SimpleRefresh,    TRUE,
  191.         TAG_DONE))
  192.         {
  193.             struct IntuiMessage    *Message;
  194.             struct Gadget *MsgGadget;
  195.             ULONG MsgClass;
  196.             BOOL Done;
  197.  
  198.             GuideContext(CONTEXT_SIGNATURE);
  199.  
  200.             PushWindow(PanelWindow);
  201.  
  202.             LT_ShowWindow(Handle,TRUE);
  203.  
  204.             Done = FALSE;
  205.  
  206.             do
  207.             {
  208.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  209.                     break;
  210.  
  211.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  212.                 {
  213.                     MsgClass    = Message->Class;
  214.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  215.  
  216.                     LT_ReplyIMsg(Message);
  217.  
  218.                     if(MsgClass == IDCMP_GADGETUP)
  219.                     {
  220.                         switch(MsgGadget->GadgetID)
  221.                         {
  222.                             case GAD_USE:
  223.  
  224.                                 strcpy(String,SignatureTypes[Index]);
  225.  
  226.                                 Ok = Done = TRUE;
  227.                                 break;
  228.  
  229.                             case GAD_CANCEL:
  230.  
  231.                                 Done = TRUE;
  232.                                 break;
  233.                         }
  234.                     }
  235.  
  236.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  237.                     {
  238.                         strcpy(String,SignatureTypes[Index]);
  239.  
  240.                         Ok = Done = TRUE;
  241.  
  242.                         LT_PressButton(Handle,GAD_USE);
  243.                     }
  244.                 }
  245.             }
  246.             while(!Done);
  247.  
  248.             PopWindow();
  249.         }
  250.  
  251.         LT_DeleteHandle(Handle);
  252.     }
  253.  
  254.     return(Ok);
  255. }
  256.  
  257. BOOL
  258. LibPanel(struct Window *Parent,struct Configuration *LocalConfig)
  259. {
  260.     STATIC LONG PageTitleID[6] =
  261.     {
  262.         MSG_XFER_GENERAL_OPTIONS_TXT,
  263.         MSG_XFER_PAGE1_TXT,
  264.         MSG_XFER_PAGE4_TXT,
  265.         MSG_XFER_PAGE3_TXT,
  266.         MSG_XFER_PAGE2_TXT,
  267.         -1
  268.     };
  269.  
  270.     STATIC BYTE InitialPage = 0;
  271.  
  272.     STRPTR Signatures[TRANSFERSIG_BINARYDOWNLOAD + 1];
  273.     struct FileRequester *FileRequester;
  274.     LayoutHandle *Handle;
  275.     STRPTR String;
  276.     BOOL UseIt;
  277.     LONG i;
  278.  
  279.     if(!(Signatures[0] = AllocVecPooled(SIGNATURE_LENGTH * (TRANSFERSIG_BINARYDOWNLOAD + 1),MEMF_ANY)))
  280.         return(FALSE);
  281.  
  282.     SaveConfig(LocalConfig,PrivateConfig);
  283.  
  284.     for(i = 1 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  285.         Signatures[i] = Signatures[i - 1] + SIGNATURE_LENGTH;
  286.  
  287.     for(i = 0 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  288.     {
  289.         if(PrivateConfig->TransferConfig->Signatures[i] . Length)
  290.             TranslateBack(PrivateConfig->TransferConfig->Signatures[i] . Signature,PrivateConfig->TransferConfig->Signatures[i] . Length,Signatures[i],SIGNATURE_LENGTH);
  291.         else
  292.             Signatures[i][0] = 0;
  293.     }
  294.  
  295.     UseIt = FALSE;
  296.  
  297.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  298.         LAHN_LocaleHook,    &LocaleHook,
  299.         LAHN_ExitFlush,    FALSE,
  300.     TAG_DONE))
  301.     {
  302.         struct Window *PanelWindow;
  303.  
  304.         LT_New(Handle,
  305.             LA_Type,    VERTICAL_KIND,
  306.         TAG_DONE);
  307.         {
  308.             LT_New(Handle,
  309.                 LA_Type,    VERTICAL_KIND,
  310.             TAG_DONE);
  311.             {
  312.                 LT_New(Handle,
  313.                     LA_Type,            TAB_KIND,
  314.                     LA_LabelID,            MSG_XFER_PAGE_TXT,
  315.                     LACY_LabelTable,    PageTitleID,
  316.                     LACY_AutoPageID,    GAD_PAGEGROUP,
  317.                     LACY_TabKey,        TRUE,
  318.                     LA_BYTE,            &InitialPage,
  319.                     LATB_FullWidth,        TRUE,
  320.                     LA_ID,                GAD_PAGER,
  321.                 TAG_DONE);
  322.  
  323.                 LT_EndGroup(Handle);
  324.             }
  325.  
  326.             LT_New(Handle,
  327.                 LA_Type,        VERTICAL_KIND,
  328.                 LA_ID,            GAD_PAGEGROUP,
  329.                 LAGR_ActivePage,InitialPage,
  330.             TAG_DONE);
  331.             {
  332.                 LT_New(Handle,
  333.                     LA_Type,    VERTICAL_KIND,
  334.                 TAG_DONE);
  335.                 {
  336.                     LT_New(Handle,
  337.                         LA_Type,    HORIZONTAL_KIND,
  338.                     TAG_DONE);
  339.                     {
  340.                         LT_New(Handle,
  341.                             LA_Type,    VERTICAL_KIND,
  342.                         TAG_DONE);
  343.                         {
  344.                             LT_New(Handle,
  345.                                 LA_Type,    CHECKBOX_KIND,
  346.                                 LA_LabelID,    MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD,
  347.                                 LA_BYTE,    &PrivateConfig->TransferConfig->OverridePath,
  348.                             TAG_DONE);
  349.  
  350.                             LT_New(Handle,
  351.                                 LA_Type,    CHECKBOX_KIND,
  352.                                 LA_LabelID,    MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD,
  353.                                 LA_BYTE,    &PrivateConfig->TransferConfig->SetArchivedBit,
  354.                             TAG_DONE);
  355.  
  356.                             LT_New(Handle,
  357.                                 LA_Type,    CHECKBOX_KIND,
  358.                                 LA_LabelID,    MSG_MISCPANEL_TRANSFER_ICONS_GAD,
  359.                                 LA_BYTE,    &PrivateConfig->TransferConfig->TransferIcons,
  360.                             TAG_DONE);
  361.  
  362.                             LT_EndGroup(Handle);
  363.                         }
  364.  
  365.                         LT_New(Handle,
  366.                             LA_Type,    VERTICAL_KIND,
  367.                         TAG_DONE);
  368.                         {
  369.                             LT_New(Handle,
  370.                                 LA_Type,    CHECKBOX_KIND,
  371.                                 LA_LabelID,    MSG_MANGLE_UPLOAD_FILENAMES_TXT,
  372.                                 LA_BYTE,    &PrivateConfig->TransferConfig->MangleFileNames,
  373.                                 LA_ID,        GAD_MANGLE,
  374.                             TAG_DONE);
  375.  
  376.                             LT_New(Handle,
  377.                                 LA_Type,    CHECKBOX_KIND,
  378.                                 LA_LabelID,    MSG_MISCPANEL_HIDE_UPLOAD_ICON_GAD,
  379.                                 LA_BYTE,    &PrivateConfig->TransferConfig->HideUploadIcon,
  380.                             TAG_DONE);
  381.  
  382.                             LT_EndGroup(Handle);
  383.                         }
  384.  
  385.                         LT_EndGroup(Handle);
  386.                     }
  387.  
  388.                     LT_New(Handle,
  389.                         LA_Type,    VERTICAL_KIND,
  390.                     TAG_DONE);
  391.                     {
  392.                         LT_New(Handle,
  393.                             LA_Type,                XBAR_KIND,
  394.                         TAG_DONE);
  395.  
  396.                         LT_New(Handle,
  397.                             LA_Type,                INTEGER_KIND,
  398.                             LA_LabelID,                MSG_NOTIFY_USER_AFTER_N_ERRORS_HAVE_OCCURED_TXT,
  399.                             LA_UWORD,                &PrivateConfig->TransferConfig->ErrorNotification,
  400.                             LA_ID,                    GAD_NOTIFY_AFTER_N_ERRORS,
  401.                             LA_Chars,                8,
  402.                             LAIN_Min,                0,
  403.                             LAIN_Max,                65535,
  404.                             LAIN_UseIncrementers,    TRUE,
  405.                         TAG_DONE);
  406.  
  407.                         LT_EndGroup(Handle);
  408.                     }
  409.  
  410.                     LT_New(Handle,
  411.                         LA_Type,    VERTICAL_KIND,
  412.                     TAG_DONE);
  413.                     {
  414.                         LT_New(Handle,
  415.                             LA_Type,            CYCLE_KIND,
  416.                             LA_LabelID,            MSG_NOTIFY_USER_TXT,
  417.                             LA_BYTE,            &PrivateConfig->TransferConfig->TransferNotification,
  418.                             LA_ID,                GAD_NOTIFY_WHEN,
  419.                             LACY_FirstLabel,    MSG_NOTIFY_USER_MODE1_TXT,
  420.                             LACY_LastLabel,        MSG_NOTIFY_USER_MODE4_TXT,
  421.                         TAG_DONE);
  422.  
  423.                         LT_New(Handle,
  424.                             LA_Type,            CYCLE_KIND,
  425.                             LA_LabelID,            MSG_MISCPANEL_IDENTIFY_FILES_GAD,
  426.                             LACY_FirstLabel,    MSG_MISCPANEL_IDENTIFY_IGNORE_TXT,
  427.                             LACY_LastLabel,        MSG_MISCPANEL_IDENTIFY_SOURCE_TXT,
  428.                             LA_BYTE,            &PrivateConfig->TransferConfig->IdentifyFiles,
  429.                         TAG_DONE);
  430.  
  431.                         LT_New(Handle,
  432.                             LA_Type,            XBAR_KIND,
  433.                         TAG_DONE);
  434.  
  435.                         LT_New(Handle,
  436.                             LA_Type,            STRING_KIND,
  437.                             LA_LabelID,            MSG_IDENTIFY_COMMAND_GAD,
  438.                             LA_UWORD,            PrivateConfig->TransferConfig->IdentifyCommand,
  439.                             LA_ID,                GAD_IDENTIFY_COMMAND,
  440.                             GTST_MaxChars,        sizeof(PrivateConfig->TransferConfig->IdentifyCommand),
  441.                             LAST_UsePicker,        TRUE,
  442.                         TAG_DONE);
  443.  
  444.                         LT_EndGroup(Handle);
  445.                     }
  446.  
  447.                     LT_EndGroup(Handle);
  448.                 }
  449.  
  450.                 LT_New(Handle,
  451.                     LA_Type,    VERTICAL_KIND,
  452.                 TAG_DONE);
  453.                 {
  454.                     LT_New(Handle,
  455.                         LA_Type,        CYCLE_KIND,
  456.                         LA_ID,            GAD_DEFAULT_TYPE,
  457.                         LA_BYTE,        &PrivateConfig->TransferConfig->DefaultType,
  458.                         LA_LabelID,        MSG_XFER_TYPE_TXT,
  459.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  460.                         LACY_LastLabel,    MSG_XFER_TYPE2_TXT,
  461.                         LA_Chars,        SIGNATURE_LENGTH - 1,
  462.                     TAG_DONE);
  463.  
  464.                     LT_New(Handle,
  465.                         LA_Type,        STRING_KIND,
  466.                         LA_ID,            GAD_DEFAULT_NAME,
  467.                         LA_LabelID,        MSG_XFER_NAME_TXT,
  468.                         LA_STRPTR,        PrivateConfig->TransferConfig->DefaultLibrary,
  469.                         GTST_MaxChars,    sizeof(PrivateConfig->TransferConfig->DefaultLibrary) - 1,
  470.                         LAST_Picker,    TRUE,
  471.                     TAG_DONE);
  472.  
  473.                     LT_New(Handle,
  474.                         LA_Type,        STRING_KIND,
  475.                         LA_ID,            GAD_DEFAULT_SENDSIGNATURE,
  476.                         LA_LabelID,        MSG_XFER_SEND_SIGNATURE_TXT,
  477.                         LA_STRPTR,        Signatures[TRANSFERSIG_DEFAULTUPLOAD],
  478.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  479.                         LAST_Picker,    TRUE,
  480.                     TAG_DONE);
  481.  
  482.                     LT_New(Handle,
  483.                         LA_Type,        STRING_KIND,
  484.                         LA_ID,            GAD_DEFAULT_RECEIVESIGNATURE,
  485.                         LA_LabelID,        MSG_XFER_RECEIVE_SIGNATURE_TXT,
  486.                         LA_STRPTR,        Signatures[TRANSFERSIG_DEFAULTDOWNLOAD],
  487.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  488.                         LAST_Picker,    TRUE,
  489.                     TAG_DONE);
  490.  
  491.                     LT_New(Handle,
  492.                         LA_Type,        BUTTON_KIND,
  493.                         LA_LabelID,        MSG_XFER_SETTINGS_TXT,
  494.                         LA_ID,            GAD_DEFAULT_PREFS,
  495.                     TAG_DONE);
  496.  
  497.                     LT_EndGroup(Handle);
  498.                 }
  499.  
  500.                 LT_New(Handle,
  501.                     LA_Type,    VERTICAL_KIND,
  502.                 TAG_DONE);
  503.                 {
  504.                     LT_New(Handle,
  505.                         LA_Type,        CYCLE_KIND,
  506.                         LA_ID,            GAD_BINARY_UPLOAD_TYPE,
  507.                         LA_BYTE,        &PrivateConfig->TransferConfig->BinaryUploadType,
  508.                         LA_LabelID,        MSG_XFER_TYPE_TXT,
  509.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  510.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  511.                         LA_Chars,        SIGNATURE_LENGTH - 1,
  512.                     TAG_DONE);
  513.  
  514.                     LT_New(Handle,
  515.                         LA_Type,        STRING_KIND,
  516.                         LA_ID,            GAD_BINARY_UPLOAD_NAME,
  517.                         LA_LabelID,        MSG_XFER_SEND_TXT,
  518.                         LA_STRPTR,        PrivateConfig->TransferConfig->BinaryUploadLibrary,
  519.                         GTST_MaxChars,    sizeof(PrivateConfig->TransferConfig->BinaryUploadLibrary) - 1,
  520.                         LAST_Picker,    TRUE,
  521.                         GA_Disabled,    PrivateConfig->TransferConfig->BinaryUploadType == XFER_DEFAULT,
  522.                     TAG_DONE);
  523.  
  524.                     LT_New(Handle,
  525.                         LA_Type,        STRING_KIND,
  526.                         LA_ID,            GAD_BINARY_UPLOAD_SIGNATURE,
  527.                         LA_LabelID,        MSG_XFER_SIGNATURE_TXT,
  528.                         LA_STRPTR,        Signatures[TRANSFERSIG_BINARYUPLOAD],
  529.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  530.                         LAST_Picker,    TRUE,
  531.                         GA_Disabled,    PrivateConfig->TransferConfig->BinaryUploadType == XFER_DEFAULT,
  532.                     TAG_DONE);
  533.  
  534.                     LT_New(Handle,
  535.                         LA_Type,        BUTTON_KIND,
  536.                         LA_LabelID,        MSG_XFER_SETTINGS_TXT,
  537.                         LA_ID,            GAD_BINARY_UPLOAD_PREFS,
  538.                         GA_Disabled,    PrivateConfig->TransferConfig->BinaryUploadType == XFER_DEFAULT || PrivateConfig->TransferConfig->BinaryUploadType == XFER_EXTERNALPROGRAM,
  539.                     TAG_DONE);
  540.  
  541.                     LT_New(Handle,
  542.                         LA_Type,        XBAR_KIND,
  543.                     TAG_DONE);
  544.  
  545.                     LT_New(Handle,
  546.                         LA_Type,        CYCLE_KIND,
  547.                         LA_ID,            GAD_BINARY_DOWNLOAD_TYPE,
  548.                         LA_BYTE,        &PrivateConfig->TransferConfig->BinaryDownloadType,
  549.                         LA_LabelID,        MSG_XFER_TYPE_TXT,
  550.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  551.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  552.                     TAG_DONE);
  553.  
  554.                     LT_New(Handle,
  555.                         LA_Type,        STRING_KIND,
  556.                         LA_ID,            GAD_BINARY_DOWNLOAD_NAME,
  557.                         LA_LabelID,        MSG_XFER_RECEIVE_TXT,
  558.                         LA_STRPTR,        PrivateConfig->TransferConfig->BinaryDownloadLibrary,
  559.                         GTST_MaxChars,    sizeof(PrivateConfig->TransferConfig->BinaryDownloadLibrary) - 1,
  560.                         LAST_Picker,    TRUE,
  561.                         GA_Disabled,    PrivateConfig->TransferConfig->BinaryDownloadType == XFER_DEFAULT,
  562.                     TAG_DONE);
  563.  
  564.                     LT_New(Handle,
  565.                         LA_Type,        STRING_KIND,
  566.                         LA_ID,            GAD_BINARY_DOWNLOAD_SIGNATURE,
  567.                         LA_LabelID,        MSG_XFER_SIGNATURE_TXT,
  568.                         LA_STRPTR,        Signatures[TRANSFERSIG_BINARYDOWNLOAD],
  569.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  570.                         LAST_Picker,    TRUE,
  571.                         GA_Disabled,    PrivateConfig->TransferConfig->BinaryDownloadType == XFER_DEFAULT,
  572.                     TAG_DONE);
  573.  
  574.                     LT_New(Handle,
  575.                         LA_Type,        BUTTON_KIND,
  576.                         LA_LabelID,        MSG_XFER_SETTINGS_TXT,
  577.                         LA_ID,            GAD_BINARY_DOWNLOAD_PREFS,
  578.                         GA_Disabled,    PrivateConfig->TransferConfig->BinaryDownloadType == XFER_DEFAULT || PrivateConfig->TransferConfig->BinaryDownloadType == XFER_EXTERNALPROGRAM,
  579.                     TAG_DONE);
  580.  
  581.                     LT_EndGroup(Handle);
  582.                 }
  583.  
  584.                 LT_New(Handle,
  585.                     LA_Type,    VERTICAL_KIND,
  586.                 TAG_DONE);
  587.                 {
  588.                     LT_New(Handle,
  589.                         LA_Type,        CYCLE_KIND,
  590.                         LA_ID,            GAD_TEXT_UPLOAD_TYPE,
  591.                         LA_BYTE,        &PrivateConfig->TransferConfig->TextUploadType,
  592.                         LA_LabelID,        MSG_XFER_TYPE_TXT,
  593.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  594.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  595.                         LA_Chars,        SIGNATURE_LENGTH - 1,
  596.                     TAG_DONE);
  597.  
  598.                     LT_New(Handle,
  599.                         LA_Type,        STRING_KIND,
  600.                         LA_ID,            GAD_TEXT_UPLOAD_NAME,
  601.                         LA_LabelID,        MSG_XFER_SEND_TXT,
  602.                         LA_STRPTR,        PrivateConfig->TransferConfig->TextUploadLibrary,
  603.                         GTST_MaxChars,    sizeof(PrivateConfig->TransferConfig->TextUploadLibrary) - 1,
  604.                         LAST_Picker,    TRUE,
  605.                         GA_Disabled,    PrivateConfig->TransferConfig->TextUploadType == XFER_DEFAULT,
  606.                     TAG_DONE);
  607.  
  608.                     LT_New(Handle,
  609.                         LA_Type,        STRING_KIND,
  610.                         LA_ID,            GAD_TEXT_UPLOAD_SIGNATURE,
  611.                         LA_LabelID,        MSG_XFER_SIGNATURE_TXT,
  612.                         LA_STRPTR,        Signatures[TRANSFERSIG_TEXTUPLOAD],
  613.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  614.                         LAST_Picker,    TRUE,
  615.                         GA_Disabled,    PrivateConfig->TransferConfig->TextUploadType == XFER_DEFAULT,
  616.                     TAG_DONE);
  617.  
  618.                     LT_New(Handle,
  619.                         LA_Type,        BUTTON_KIND,
  620.                         LA_LabelID,        MSG_XFER_SETTINGS_TXT,
  621.                         LA_ID,            GAD_TEXT_UPLOAD_PREFS,
  622.                         GA_Disabled,    PrivateConfig->TransferConfig->TextUploadType == XFER_DEFAULT || PrivateConfig->TransferConfig->TextUploadType == XFER_EXTERNALPROGRAM,
  623.                     TAG_DONE);
  624.  
  625.                     LT_New(Handle,
  626.                         LA_Type,        XBAR_KIND,
  627.                     TAG_DONE);
  628.  
  629.                     LT_New(Handle,
  630.                         LA_Type,        CYCLE_KIND,
  631.                         LA_ID,            GAD_TEXT_DOWNLOAD_TYPE,
  632.                         LA_BYTE,        &PrivateConfig->TransferConfig->TextDownloadType,
  633.                         LA_LabelID,        MSG_XFER_TYPE_TXT,
  634.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  635.                         LACY_LastLabel,    MSG_XFER_TYPE3_TXT,
  636.                     TAG_DONE);
  637.  
  638.                     LT_New(Handle,
  639.                         LA_Type,        STRING_KIND,
  640.                         LA_ID,            GAD_TEXT_DOWNLOAD_NAME,
  641.                         LA_LabelID,        MSG_XFER_RECEIVE_TXT,
  642.                         LA_STRPTR,        PrivateConfig->TransferConfig->TextDownloadLibrary,
  643.                         GTST_MaxChars,    sizeof(PrivateConfig->TransferConfig->TextDownloadLibrary) - 1,
  644.                         LAST_Picker,    TRUE,
  645.                         GA_Disabled,    PrivateConfig->TransferConfig->TextDownloadType == XFER_DEFAULT,
  646.                     TAG_DONE);
  647.  
  648.                     LT_New(Handle,
  649.                         LA_Type,        STRING_KIND,
  650.                         LA_ID,            GAD_TEXT_DOWNLOAD_SIGNATURE,
  651.                         LA_LabelID,        MSG_XFER_SIGNATURE_TXT,
  652.                         LA_STRPTR,        Signatures[TRANSFERSIG_TEXTDOWNLOAD],
  653.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  654.                         LAST_Picker,    TRUE,
  655.                         GA_Disabled,    PrivateConfig->TransferConfig->TextDownloadType == XFER_DEFAULT,
  656.                     TAG_DONE);
  657.  
  658.                     LT_New(Handle,
  659.                         LA_Type,        BUTTON_KIND,
  660.                         LA_LabelID,        MSG_XFER_SETTINGS_TXT,
  661.                         LA_ID,            GAD_TEXT_DOWNLOAD_PREFS,
  662.                         GA_Disabled,    PrivateConfig->TransferConfig->TextDownloadType == XFER_DEFAULT || PrivateConfig->TransferConfig->TextDownloadType == XFER_EXTERNALPROGRAM,
  663.                     TAG_DONE);
  664.  
  665.                     LT_EndGroup(Handle);
  666.                 }
  667.  
  668.                 LT_New(Handle,
  669.                     LA_Type,    VERTICAL_KIND,
  670.                 TAG_DONE);
  671.                 {
  672.                     LT_New(Handle,
  673.                         LA_Type,        CYCLE_KIND,
  674.                         LA_ID,            GAD_ASCII_UPLOAD_TYPE,
  675.                         LA_BYTE,        &PrivateConfig->TransferConfig->ASCIIUploadType,
  676.                         LA_LabelID,        MSG_XFER_TYPE_TXT,
  677.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  678.                         LACY_LastLabel,    MSG_XFER_TYPE4_TXT,
  679.                         LA_Chars,        SIGNATURE_LENGTH - 1,
  680.                     TAG_DONE);
  681.  
  682.                     LT_New(Handle,
  683.                         LA_Type,        STRING_KIND,
  684.                         LA_ID,            GAD_ASCII_UPLOAD_NAME,
  685.                         LA_LabelID,        MSG_XFER_SEND_TXT,
  686.                         LA_STRPTR,        PrivateConfig->TransferConfig->ASCIIUploadLibrary,
  687.                         GTST_MaxChars,    sizeof(PrivateConfig->TransferConfig->ASCIIUploadLibrary) - 1,
  688.                         LAST_Picker,    TRUE,
  689.                         GA_Disabled,    PrivateConfig->TransferConfig->ASCIIUploadType == XFER_DEFAULT || PrivateConfig->TransferConfig->ASCIIUploadType == XFER_INTERNAL,
  690.                     TAG_DONE);
  691.  
  692.                     LT_New(Handle,
  693.                         LA_Type,        STRING_KIND,
  694.                         LA_ID,            GAD_ASCII_UPLOAD_SIGNATURE,
  695.                         LA_LabelID,        MSG_XFER_SIGNATURE_TXT,
  696.                         LA_STRPTR,        Signatures[TRANSFERSIG_ASCIIUPLOAD],
  697.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  698.                         LAST_Picker,    TRUE,
  699.                         GA_Disabled,    PrivateConfig->TransferConfig->ASCIIUploadType == XFER_DEFAULT || PrivateConfig->TransferConfig->ASCIIUploadType == XFER_INTERNAL,
  700.                     TAG_DONE);
  701.  
  702.                     LT_New(Handle,
  703.                         LA_Type,        BUTTON_KIND,
  704.                         LA_LabelID,        MSG_XFER_SETTINGS_TXT,
  705.                         LA_ID,            GAD_ASCII_UPLOAD_PREFS,
  706.                         GA_Disabled,    PrivateConfig->TransferConfig->ASCIIUploadType == XFER_DEFAULT || PrivateConfig->TransferConfig->ASCIIUploadType == XFER_EXTERNALPROGRAM,
  707.                     TAG_DONE);
  708.  
  709.                     LT_New(Handle,
  710.                         LA_Type,        XBAR_KIND,
  711.                     TAG_DONE);
  712.  
  713.                     LT_New(Handle,
  714.                         LA_Type,        CYCLE_KIND,
  715.                         LA_ID,            GAD_ASCII_DOWNLOAD_TYPE,
  716.                         LA_BYTE,        &PrivateConfig->TransferConfig->ASCIIDownloadType,
  717.                         LA_LabelID,        MSG_XFER_TYPE_TXT,
  718.                         LACY_FirstLabel,MSG_XFER_TYPE1_TXT,
  719.                         LACY_LastLabel,    MSG_XFER_TYPE4_TXT,
  720.                     TAG_DONE);
  721.  
  722.                     LT_New(Handle,
  723.                         LA_Type,        STRING_KIND,
  724.                         LA_ID,            GAD_ASCII_DOWNLOAD_NAME,
  725.                         LA_LabelID,        MSG_XFER_RECEIVE_TXT,
  726.                         LA_STRPTR,        PrivateConfig->TransferConfig->ASCIIDownloadLibrary,
  727.                         GTST_MaxChars,    sizeof(PrivateConfig->TransferConfig->ASCIIDownloadLibrary) - 1,
  728.                         LAST_Picker,    TRUE,
  729.                         GA_Disabled,    PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_DEFAULT || PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_INTERNAL,
  730.                     TAG_DONE);
  731.  
  732.                     LT_New(Handle,
  733.                         LA_Type,        STRING_KIND,
  734.                         LA_ID,            GAD_ASCII_DOWNLOAD_SIGNATURE,
  735.                         LA_LabelID,        MSG_XFER_SIGNATURE_TXT,
  736.                         LA_STRPTR,        Signatures[TRANSFERSIG_ASCIIDOWNLOAD],
  737.                         GTST_MaxChars,    SIGNATURE_LENGTH - 1,
  738.                         LAST_Picker,    TRUE,
  739.                         GA_Disabled,    PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_DEFAULT || PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_INTERNAL,
  740.                     TAG_DONE);
  741.  
  742.                     LT_New(Handle,
  743.                         LA_Type,        BUTTON_KIND,
  744.                         LA_LabelID,        MSG_XFER_SETTINGS_TXT,
  745.                         LA_ID,            GAD_ASCII_DOWNLOAD_PREFS,
  746.                         GA_Disabled,    PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_DEFAULT || PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_EXTERNALPROGRAM,
  747.                     TAG_DONE);
  748.  
  749.                     LT_EndGroup(Handle);
  750.                 }
  751.  
  752.                 LT_EndGroup(Handle);
  753.             }
  754.  
  755.             LT_New(Handle,
  756.                 LA_Type,VERTICAL_KIND,
  757.             TAG_DONE);
  758.             {
  759.                 LT_New(Handle,
  760.                     LA_Type,        XBAR_KIND,
  761.                     LAXB_FullSize,    TRUE,
  762.                 TAG_DONE);
  763.  
  764.                 LT_EndGroup(Handle);
  765.             }
  766.  
  767.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  768.                 LAGR_SameSize,    TRUE,
  769.                 LAGR_Spread,    TRUE,
  770.             TAG_DONE);
  771.             {
  772.                 LT_New(Handle,
  773.                     LA_Type,        BUTTON_KIND,
  774.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  775.                     LA_ID,            GAD_USE,
  776.                     LABT_ReturnKey,    TRUE,
  777.                     LABT_ExtraFat,    TRUE,
  778.                 TAG_DONE);
  779.  
  780.                 LT_New(Handle,
  781.                     LA_Type,        BUTTON_KIND,
  782.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  783.                     LA_ID,            GAD_CANCEL,
  784.                     LABT_EscKey,    TRUE,
  785.                     LABT_ExtraFat,    TRUE,
  786.                 TAG_DONE);
  787.  
  788.                 LT_EndGroup(Handle);
  789.             }
  790.  
  791.             LT_EndGroup(Handle);
  792.         }
  793.  
  794.         if(PanelWindow = LT_Build(Handle,
  795.             LAWN_TitleID,        MSG_LIBPANEL_LIBRARY_PREFERENCES_TXT,
  796.             LAWN_HelpHook,        &GuideHook,
  797.             LAWN_Parent,        Parent,
  798.             WA_DepthGadget,        TRUE,
  799.             WA_DragBar,            TRUE,
  800.             WA_RMBTrap,            TRUE,
  801.             WA_Activate,        TRUE,
  802.             WA_SimpleRefresh,    TRUE,
  803.         TAG_DONE))
  804.         {
  805.             UBYTE LocalBuffer[MAX_FILENAME_LENGTH];
  806.             struct IntuiMessage    *Message;
  807.             struct Gadget *MsgGadget;
  808.             STRPTR Contents;
  809.             ULONG MsgClass;
  810.             UWORD MsgCode;
  811.             LONG Type;
  812.             BOOL Done;
  813.  
  814.             GuideContext(CONTEXT_LIBS);
  815.  
  816.             PushWindow(PanelWindow);
  817.  
  818.             LT_ShowWindow(Handle,TRUE);
  819.  
  820.             Done = FALSE;
  821.  
  822.             do
  823.             {
  824.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  825.                     break;
  826.  
  827.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  828.                 {
  829.                     MsgClass    = Message->Class;
  830.                     MsgCode        = Message->Code;
  831.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  832.  
  833.                     LT_ReplyIMsg(Message);
  834.  
  835.                     if(MsgClass == IDCMP_GADGETUP)
  836.                     {
  837.                         switch(MsgGadget->GadgetID)
  838.                         {
  839.                             case GAD_USE:
  840.  
  841.                                 LT_UpdateStrings(Handle);
  842.  
  843.                                 for(i = 0 ; i <= TRANSFERSIG_BINARYDOWNLOAD ; i++)
  844.                                     PrivateConfig->TransferConfig->Signatures[i] . Length = TranslateString(Signatures[i],PrivateConfig->TransferConfig->Signatures[i] . Signature);
  845.  
  846.                                 UseIt = Done = TRUE;
  847.  
  848.                                 break;
  849.  
  850.                             case GAD_CANCEL:
  851.  
  852.                                 Done = TRUE;
  853.  
  854.                                 break;
  855.  
  856.                             case GAD_DEFAULT_NAME:
  857.                             case GAD_ASCII_UPLOAD_NAME:
  858.                             case GAD_ASCII_DOWNLOAD_NAME:
  859.                             case GAD_TEXT_UPLOAD_NAME:
  860.                             case GAD_TEXT_DOWNLOAD_NAME:
  861.                             case GAD_BINARY_UPLOAD_NAME:
  862.                             case GAD_BINARY_DOWNLOAD_NAME:
  863.  
  864.                                 switch(LT_GetAttributes(Handle,MsgGadget->GadgetID - 1,TAG_DONE))
  865.                                 {
  866.                                     case XFER_XPR:
  867.  
  868.                                         FindLibDev(PanelWindow,LT_GetString(Handle,MsgGadget->GadgetID),NT_LIBRARY,NULL);
  869.  
  870.                                         break;
  871.  
  872.                                     case XFER_EXTERNALPROGRAM:
  873.  
  874.                                         FindProgram(PanelWindow,LT_GetString(Handle,MsgGadget->GadgetID),NULL);
  875.  
  876.                                         break;
  877.                                 }
  878.  
  879.                                 break;
  880.  
  881.                             case GAD_DEFAULT_TYPE:
  882.                             case GAD_ASCII_UPLOAD_TYPE:
  883.                             case GAD_ASCII_DOWNLOAD_TYPE:
  884.                             case GAD_TEXT_UPLOAD_TYPE:
  885.                             case GAD_TEXT_DOWNLOAD_TYPE:
  886.                             case GAD_BINARY_UPLOAD_TYPE:
  887.                             case GAD_BINARY_DOWNLOAD_TYPE:
  888.  
  889.                                 LT_SetAttributes(Handle,MsgGadget->GadgetID + 1,
  890.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_INTERNAL,
  891.                                 TAG_DONE);
  892.  
  893.                                 LT_SetAttributes(Handle,MsgGadget->GadgetID + 2,
  894.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_INTERNAL,
  895.                                 TAG_DONE);
  896.  
  897.                                 LT_SetAttributes(Handle,MsgGadget->GadgetID + 3,
  898.                                     GA_Disabled,    MsgCode == XFER_DEFAULT || MsgCode == XFER_EXTERNALPROGRAM,
  899.                                 TAG_DONE);
  900.  
  901.                                 break;
  902.  
  903.                             case GAD_DEFAULT_PREFS:
  904.                             case GAD_ASCII_UPLOAD_PREFS:
  905.                             case GAD_ASCII_DOWNLOAD_PREFS:
  906.                             case GAD_TEXT_UPLOAD_PREFS:
  907.                             case GAD_TEXT_DOWNLOAD_PREFS:
  908.                             case GAD_BINARY_UPLOAD_PREFS:
  909.                             case GAD_BINARY_DOWNLOAD_PREFS:
  910.  
  911.                                 Type        = LT_GetAttributes(Handle,MsgGadget->GadgetID - 3,TAG_DONE);
  912.                                 Contents    = LT_GetString(Handle,MsgGadget->GadgetID - 2);
  913.  
  914.                                 if(Type == XFER_XPR)
  915.                                 {
  916.                                     if(Contents[0])
  917.                                     {
  918.                                         LT_LockWindow(PanelWindow);
  919.  
  920.                                         if(ChangeProtocol(Contents,Type))
  921.                                         {
  922.                                             if(XProtocolBase)
  923.                                             {
  924.                                                 XprIO->xpr_filename = NULL;
  925.  
  926.                                                 XPRCommandSelected = FALSE;
  927.  
  928.                                                 ClearSerial();
  929.  
  930.                                                 NewOptions = FALSE;
  931.  
  932.                                                 TransferBits = XProtocolSetup(XprIO);
  933.  
  934.                                                 RestartSerial();
  935.  
  936.                                                 DeleteTransferPanel(TRUE);
  937.  
  938.                                                     /* Successful? */
  939.  
  940.                                                 if(!(TransferBits & XPRS_SUCCESS))
  941.                                                 {
  942.                                                     ShowRequest(PanelWindow,LocaleString(MSG_GLOBAL_FAILED_TO_SET_UP_PROTOCOL_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),LastXprLibrary);
  943.  
  944.                                                     CloseLibrary(XProtocolBase);
  945.  
  946.                                                     XProtocolBase = NULL;
  947.  
  948.                                                     LastXprLibrary[0] = 0;
  949.  
  950.                                                     TransferBits = 0;
  951.  
  952.                                                     SetTransferMenu(TRUE);
  953.                                                 }
  954.                                                 else
  955.                                                     SaveProtocolOpts();
  956.                                             }
  957.                                         }
  958.  
  959.                                         ResetProtocol();
  960.  
  961.                                         LT_UnlockWindow(PanelWindow);
  962.                                     }
  963.                                 }
  964.  
  965.                                 if(Type == XFER_INTERNAL)
  966.                                 {
  967.                                     LT_LockWindow(PanelWindow);
  968.  
  969.                                     ASCIITransferPanel(PanelWindow,PrivateConfig);
  970.  
  971.                                     LT_UnlockWindow(PanelWindow);
  972.  
  973.                                     LT_ShowWindow(Handle,TRUE);
  974.                                 }
  975.  
  976.                                 break;
  977.                         }
  978.                     }
  979.  
  980.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  981.                     {
  982.                         switch(MsgGadget->GadgetID)
  983.                         {
  984.                             case GAD_DEFAULT_SENDSIGNATURE:
  985.                             case GAD_ASCII_UPLOAD_SIGNATURE:
  986.                             case GAD_TEXT_UPLOAD_SIGNATURE:
  987.                             case GAD_BINARY_UPLOAD_SIGNATURE:
  988.  
  989.                                 LT_LockWindow(PanelWindow);
  990.  
  991.                                 if(SignaturePanel(PanelWindow,LocalBuffer,FALSE))
  992.                                     LT_SetAttributes(Handle,MsgGadget->GadgetID,GTST_String,LocalBuffer,TAG_DONE);
  993.  
  994.                                 LT_UnlockWindow(PanelWindow);
  995.  
  996.                                 LT_ShowWindow(Handle,TRUE);
  997.                                 break;
  998.  
  999.                             case GAD_DEFAULT_RECEIVESIGNATURE:
  1000.                             case GAD_ASCII_DOWNLOAD_SIGNATURE:
  1001.                             case GAD_TEXT_DOWNLOAD_SIGNATURE:
  1002.                             case GAD_BINARY_DOWNLOAD_SIGNATURE:
  1003.  
  1004.                                 LT_LockWindow(PanelWindow);
  1005.  
  1006.                                 if(SignaturePanel(PanelWindow,LocalBuffer,TRUE))
  1007.                                     LT_SetAttributes(Handle,MsgGadget->GadgetID,GTST_String,LocalBuffer,TAG_DONE);
  1008.  
  1009.                                 LT_UnlockWindow(PanelWindow);
  1010.  
  1011.                                 LT_ShowWindow(Handle,TRUE);
  1012.                                 break;
  1013.  
  1014.                             case GAD_IDENTIFY_COMMAND:
  1015.  
  1016.                                 LT_LockWindow(PanelWindow);
  1017.  
  1018.                                 String = LT_GetString(Handle,MsgGadget->GadgetID);
  1019.  
  1020.                                 while(*String == ' ')
  1021.                                     String++;
  1022.  
  1023.                                 strcpy(LocalBuffer,String);
  1024.  
  1025.                                 for(i = 0 ; i < strlen(LocalBuffer) ; i++, String++)
  1026.                                 {
  1027.                                     if(LocalBuffer[i] == ' ' || LocalBuffer[i] == '\t')
  1028.                                     {
  1029.                                         LocalBuffer[i] = 0;
  1030.  
  1031.                                         break;
  1032.                                     }
  1033.                                 }
  1034.  
  1035.                                 if(i == strlen(LocalBuffer))
  1036.                                     String = NULL;
  1037.  
  1038.                                 if(FileRequester = OpenSingleFile(PanelWindow,NULL,NULL,NULL,LocalBuffer,sizeof(LocalBuffer)))
  1039.                                 {
  1040.                                     FreeAslRequest(FileRequester);
  1041.  
  1042.                                     FindProgram(PanelWindow,LocalBuffer,NULL);
  1043.  
  1044.                                     if(String)
  1045.                                         LimitedStrcat(sizeof(LocalBuffer),LocalBuffer,String);
  1046.  
  1047.                                     LT_SetAttributes(Handle,MsgGadget->GadgetID,GTST_String,LocalBuffer,TAG_DONE);
  1048.                                 }
  1049.  
  1050.                                 LT_UnlockWindow(PanelWindow);
  1051.  
  1052.                                 LT_ShowWindow(Handle,TRUE);
  1053.                                 break;
  1054.  
  1055.                             default:
  1056.  
  1057.                                 Type = LT_GetAttributes(Handle,MsgGadget->GadgetID - 1,TAG_DONE);
  1058.  
  1059.                                 if(Type == XFER_XPR)
  1060.                                 {
  1061.                                     LT_LockWindow(PanelWindow);
  1062.  
  1063.                                     strcpy(LocalBuffer,LT_GetString(Handle,MsgGadget->GadgetID));
  1064.  
  1065.                                     if(PickFile(PanelWindow,"Libs:","xpr#?.library",LocaleString(MSG_LIBPANEL_SELECT_DEFAULT_TRANSFER_LIBRARY_TXT + (MsgGadget->GadgetID - GAD_DEFAULT_TYPE) / 4),LocalBuffer,NT_LIBRARY))
  1066.                                     {
  1067.                                         FindLibDev(PanelWindow,LocalBuffer,NT_LIBRARY,NULL);
  1068.  
  1069.                                         LT_SetAttributes(Handle,MsgGadget->GadgetID,GTST_String,LocalBuffer,TAG_DONE);
  1070.                                     }
  1071.  
  1072.                                     LT_UnlockWindow(PanelWindow);
  1073.  
  1074.                                     LT_ShowWindow(Handle,TRUE);
  1075.                                 }
  1076.  
  1077.                                 if(Type == XFER_EXTERNALPROGRAM)
  1078.                                 {
  1079.                                     LT_LockWindow(PanelWindow);
  1080.  
  1081.                                     Contents = LT_GetString(Handle,MsgGadget->GadgetID);
  1082.  
  1083.                                     if(ExternalCommandPanel(PanelWindow,Contents))
  1084.                                     {
  1085.                                         FindProgram(PanelWindow,Contents,NULL);
  1086.  
  1087.                                         LT_SetAttributes(Handle,MsgGadget->GadgetID,GTST_String,Contents,TAG_DONE);
  1088.                                     }
  1089.  
  1090.                                     LT_UnlockWindow(PanelWindow);
  1091.  
  1092.                                     LT_ShowWindow(Handle,TRUE);
  1093.                                 }
  1094.  
  1095.                                 break;
  1096.                         }
  1097.                     }
  1098.                 }
  1099.             }
  1100.             while(!Done);
  1101.  
  1102.             PopWindow();
  1103.         }
  1104.  
  1105.         LT_DeleteHandle(Handle);
  1106.     }
  1107.  
  1108.     FreeVecPooled(Signatures[0]);
  1109.  
  1110.     if(UseIt)
  1111.     {
  1112.         if(Config->MiscConfig->ProtectiveMode && !PrivateConfig->TransferConfig->OverridePath)
  1113.         {
  1114.             STRPTR Library,Path;
  1115.  
  1116.             Library    = NULL;
  1117.             Path    = NULL;
  1118.  
  1119.             if(PrivateConfig->TransferConfig->DefaultType == XFER_XPR && PrivateConfig->TransferConfig->DefaultLibrary[0])
  1120.             {
  1121.                 Library    = PrivateConfig->TransferConfig->DefaultLibrary;
  1122.                 Path    = PrivateConfig->PathConfig->BinaryDownloadPath;
  1123.             }
  1124.  
  1125.             if(PrivateConfig->TransferConfig->ASCIIDownloadType == XFER_XPR && PrivateConfig->TransferConfig->ASCIIDownloadLibrary[0])
  1126.             {
  1127.                 Library    = PrivateConfig->TransferConfig->ASCIIDownloadLibrary;
  1128.                 Path    = PrivateConfig->PathConfig->ASCIIDownloadPath;
  1129.             }
  1130.  
  1131.             if(PrivateConfig->TransferConfig->TextDownloadType == XFER_XPR && PrivateConfig->TransferConfig->TextDownloadLibrary[0])
  1132.             {
  1133.                 Library    = PrivateConfig->TransferConfig->TextDownloadLibrary;
  1134.                 Path    = PrivateConfig->PathConfig->TextDownloadPath;
  1135.             }
  1136.  
  1137.             if(PrivateConfig->TransferConfig->BinaryDownloadType == XFER_XPR && PrivateConfig->TransferConfig->BinaryDownloadLibrary[0])
  1138.             {
  1139.                 Library    = PrivateConfig->TransferConfig->BinaryDownloadLibrary;
  1140.                 Path    = PrivateConfig->PathConfig->BinaryDownloadPath;
  1141.             }
  1142.  
  1143.             if(Library && Path)
  1144.             {
  1145.                 UBYTE LocalBuffer[MAX_FILENAME_LENGTH];
  1146.  
  1147.                 if(*Path == 0)
  1148.                 {
  1149.                     if(LocalGetCurrentDirName(LocalBuffer,sizeof(LocalBuffer)))
  1150.                         Path = LocalBuffer;
  1151.                 }
  1152.  
  1153.                 if(ShowRequest(Window,LocaleString(MSG_XPR_PATH_TXT),LocaleString(MSG_GLOBAL_YES_NO_TXT),Library,Path))
  1154.                     PrivateConfig->TransferConfig->OverridePath = TRUE;
  1155.             }
  1156.         }
  1157.     }
  1158.  
  1159.     if(UseIt)
  1160.         SwapConfig(LocalConfig,PrivateConfig);
  1161.     else
  1162.         SaveConfig(LocalConfig,PrivateConfig);
  1163.  
  1164.     return(UseIt);
  1165. }
  1166.